home *** CD-ROM | disk | FTP | other *** search
-
- /********************************************************************/
- /* Check class allocation errors. Copyright by Joe Schell 1989. */
- /********************************************************************/
-
- #ifndef CLASS_check_heap
- #define CLASS_check_heap
-
- #include <iostream.h>
- #include <stddef.h> // Used for ptrdiff_t definition.
-
- // CHECK_HEAP_diff_: Used get around segmented memory on IBMs.
- #if defined(__TURBOC__) \
- && (defined(__LARGE__) || defined(__HUGE__) || defined(__COMPACT__))
- #define CHECK_HEAP_diff_ char huge *
- #else
- #define CHECK_HEAP_diff_ char*
- #endif
-
-
- class check_heap
- {
- public:
- void start() { begin = new char; delete begin; }
- check_heap() { start(); }
-
- void test(const char *s=0) // Do a test.
- {
- end = new char;
- if (begin != end)
- cerr << s
- << "Heap error: entry/exit difference = "
- << diff() << ".\n";
- delete end;
- }
-
- void testnew(const char *s=0) // Do a test and reset.
- { test(s); start(); }
-
- private:
- char *begin, *end; // Beginning and end of allocation.
-
- ptrdiff_t diff() const
- { return (ptrdiff_t)
- ((CHECK_HEAP_diff_)end - (CHECK_HEAP_diff_)begin);}
-
- }; // End of check_heap class.
-
- #endif
-
-